"""
利用multiprocess模块的Process()方法创建了两个新的进程p1和p2来进行并行计算。
p = Process(target=long_time_task, args=(1,))
p.start() 子进程开始
p.join()  母进程堵塞

- 新创建的进程与进程的切换都是要耗资源的，所以平时工作中进程数不能开太大。
- 同时可以运行的进程数一般受制于CPU的核数。
- 除了使用Process方法，我们还可以使用Pool类创建多进程。
"""

from multiprocessing import Process
import os
import time

def long_time_task(i):
    print('子进程: {} - 任务{}'.format(os.getpid(), i))
    time.sleep(2)
    print("结果: {}".format(8 ** 20))


if __name__=='__main__':
    print('当前母进程: {}'.format(os.getpid()))
    start = time.time()
    p1 = Process(target=long_time_task, args=(1,))
    p2 = Process(target=long_time_task, args=(2,))
    print('等待所有子进程完成。')
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    end = time.time()
    print("总共用时{}秒".format((end - start)))